/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package hu.szamla;

import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;



@Stateless
public class SessionBean implements SessionBeanRemote, SessionBeanLocal {
    @PersistenceContext(unitName = "Szamla-ejbPU")
    private EntityManager em;

    public void persist(Object object) {
        em.persist(object);
    }

    
    @Override
    public int getRoleOfFelhasznalo(String felh) {
        try {
            Query q = em.createNamedQuery("Felhasznalo.findByFelhasznalonev");
            q.setParameter("felhasznalonev", felh);
            
            Felhasznalo f = (Felhasznalo)q.getSingleResult();
            return f.getSzerep();
        } catch (Exception e) { 
            return -1;
        }
    }
    
    @Override
    public String getTeljesNevOfFelhasznalo(String felh) {
        try {
            Query q = em.createNamedQuery("Felhasznalo.findByFelhasznalonev");
            q.setParameter("felhasznalonev", felh);
            
            Felhasznalo f = (Felhasznalo)q.getSingleResult();
            return f.getTeljesnev();
        } catch (Exception e) { 
            return "valami hiba tortent!";
        }
    }
    
    @Override
    public List getSzamlakOfFelhasznalo(String felh) {
        try {
            Query q = em.createNamedQuery("Szamla.findByUgyfel");
            q.setParameter("ugyfel", felh);
            
            List<Szamla> r = (List<Szamla>)q.getResultList();
            
            return r;
            
        } catch(Exception e) {
            System.out.println("ennek se kellett volna megtörténnie\n" + e.getMessage() + e.getCause() );
            return new ArrayList();
        }
    }
    
    @Override
    public List getSzamlakOfFelSzol(String felh, String szolg) {
        try {
            Query q = em.createNamedQuery("Szamla.findFelSzol");
            q.setParameter("szolgaltato", szolg);
            q.setParameter("ugyfel", felh);
            List<Regisztracio> r = (List<Regisztracio>)q.getResultList();
            
            return r;

        } catch(Exception e) {
            System.out.println("Problem" + e.getMessage() + e.getCause());
            return new ArrayList();
        }
    }
    
    
    @Override
    public List getInfokOfFelhasznalo(String felh) {
         try {
            Query q = em.createNamedQuery("Felhasznalo.findAllByFelhasznalonev");
            q.setParameter("felhasznalonev", felh);
            List<Regisztracio> r = (List<Regisztracio>)q.getResultList();
            
            return r;

        } catch(Exception e) {
            System.out.println("Nagy baj van sajnos" + e.getMessage() + e.getCause());
            return new ArrayList();
        }
    }
    
    @Override
    public List getUgyfelListaFromFelh(String felh) {
        try {
            Query q = em.createNamedQuery("Regisztracio.findBySzolgaltato");
            q.setParameter("szolgaltato", felh);
            List<Regisztracio> r = (List<Regisztracio>)q.getResultList();
            
            return r;

        } catch(Exception e) {
            System.out.println("Nagy baj van sajnos" + e.getMessage() + e.getCause());
            return new ArrayList();
        }
    }
    
    @Override
    public List getSzolgaltatokOfFelhasznalo(String felh) {
        try {
            Query q = em.createNamedQuery("Regisztracio.findByUgyfel");
            q.setParameter("ugyfel", felh);
            List<Regisztracio> r = (List<Regisztracio>)q.getResultList();
            
            return r;

        } catch(Exception e) {
            System.out.println("ennek nem kellett volna megtörténnie");
            return new ArrayList();
        }
        
    }
    
    @Override
    public List getSzolgaltatoLista() {
        try {
            
            Query q = em.createNamedQuery("Felhasznalo.findBySzerep");
            List<Regisztracio> r = (List<Regisztracio>)q.getResultList();
            
            return r;

        } catch(Exception e) {
            System.out.println("ennek nem kellett volna megtörténnie");
            return new ArrayList();
        }
        
    }
    
    @Override
    public Object getEgySzolgReszl(String felh) {
        try {
            Query q = em.createNamedQuery("Felhasznalo.findByFelhasznalonev");
            q.setParameter("felhasznalonev", felh);
            return q.getSingleResult();
            
        } catch(Exception e) {
            return new Object();
        }
    }
    
    @Override
    public boolean checklogin(String felh, String jelsz) {
       
        try {
            Query q = em.createNamedQuery("Felhasznalo.findByUserNameAndPassword");
            q.setParameter("username", felh);
            q.setParameter("password", jelsz);
            
     
            q.getSingleResult();
            
        } catch (Exception e) {
            return false;
            
        }
        return true;
    
    }
    
    @Override
    public boolean szigExsist(String szig) {
        try {
            Query q = em.createNamedQuery("Felhasznalo.findBySzig");
            q.setParameter("szig", szig);
            q.getSingleResult();
        } catch (Exception e) {
            return false;
        }
        return true;
    }
    
    @Override
    public boolean loginnameExists(String felh) {
        try {
            Query q = em.createNamedQuery("Felhasznalo.findByFelhasznalonev");
            q.setParameter("felhasznalonev", felh);
            q.getSingleResult();
        } catch (Exception e) {
            return false;
        }
        return true;
    }
      
    
    @Override
    public String register(String un, String pw, String name, String szig, String account, int role) {
        Felhasznalo f = new Felhasznalo(un,pw,name,szig,account,role);
        
        
        try {
            persist(f);
            return "Sikeres regisztráció";
        } catch (Exception e) {
            return "Egyéb hiba Hiba! " + e.getMessage() + e.getCause() ;
        }
    }
    
    

}
